Ana içeriğe geç

Binary Heap

Binary heap içerisinde barındırdığı elementleri düşük derecede organize tutan bir koleksiyondur. En büyük veri her zaman en öne gelmektedir. Bu yapılar ile en çok üç method kullanılmaktadır. Bunlar:

  • push
  • pop
  • peak

Olmaktadır.

Kodumuza binary heap değerlerini bir kütüphane gibi dahil ederek başlamaktayız.

use std::collections::BinaryHeap;

Sonrasında binaryheapim adında mutable bir heap oluşturabiliriz.

let mut binaryheapim = BinaryHeap::new();

Diğer koleksiyonlarda yaptığımız gibi bu koleksiyona da veriyi .push() ile gönderebiliriz.

binaryheapim.push(2);
binaryheapim.push(5);
binaryheapim.push(15);
binaryheapim.push(7);
binaryheapim.push(28);

Heap'imizin içerisine veri ekledikten sonra bu kolektifimizi yazdırabiliriz. Burada dikkat etmemiz gereken şey her nasıl eklersek ekleyelim en büyük değerin her zaman en başa geleceğidir.

println!("{:?}",binaryheapim); //[28, 15, 5, 2, 7]

Diğer methodları incelediğimizde aynı şekilde en büyük değerin başta olma kuralının uygulandığını görüntüleyebiliriz.

binaryheapim.pop();
println!("{:?}",binaryheapim); // [15, 7, 5, 2]

binaryheapim.push(17);
binaryheapim.push(9);
println!("{:?}",binaryheapim); // [17, 15, 9, 2, 7, 5]

Heap içerisinden istediğimiz veriye erişirken vektörlerdeki pop() methoduna benzer şekilde .peek() methodunu kullanabilirim. Burada dikkat etmemiz gereken şey pop methodunun zirvedeki değeri siliyor olması durumunda .peek() in silmeden gösteriyor olduğudur.

println!("{:?}",binaryheapim.peek()); // Some(17)

Heap'in boş olması durumu için normal i32 yerine Some(i32) döndürecektir.